package com.prj.ufdm.cloud.ms.auth.bpo._impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONObject;
import com.prj.ufdm.cloud.ms.auth.bpo.SysFunctionBPO;
import com.prj.ufdm.cloud.ms.auth.bpo.SysUserFunctionBPO;
import com.prj.ufdm.cloud.ms.auth.dao.SysFunctionDao;
import com.prj.ufdm.cloud.ms.auth.enums.FuntionTypeEnum;
import com.prj.ufdm.cloud.ms.auth.model.SysFunction;
import com.prj.ufdm.cloud.ms.core.bpo._impl.BaseBPOImpl;

/**
 * DESC: 用户系统功能 <br>
 * @author 胡义振
 * @date 2020年1月14日
 */
@Service 
public class SysUserFunctionBPOImpl extends BaseBPOImpl<SysFunctionDao,SysFunction> implements SysUserFunctionBPO{
	
    @Autowired
    private SysFunctionDao sysFunctionDao;
    
    @Autowired
    private SysFunctionBPO sysFunctionBPO;
    
    /**
     * DESC: 根据用户ID，查询用户功能列表
     * @auther 胡义振
     * @date 2020年1月14日
     * @param userId
     * @return
     * @throws Exception 
     * @return
     */
	public List<SysFunction> doGetFunctionListByUserId(String userId) throws Exception{
		Map<String,String> map = new HashMap<String,String>();
		map.put("userId", userId);
		return sysFunctionDao.selectFunctionListByUserId(map);
	}

    /**
     * DESC: 根据用户ID，查询用户菜单列表
     * @auther 胡义振
     * @date 2020年1月14日
     * @param userId
     * @return
     * @throws Exception 
     * @return
     */
	public List<SysFunction> doGetMenuListByUserId(String userId) throws Exception{
		Map<String,String> map = new HashMap<String,String>();
		map.put("userId", userId);
		map.put("menuFlag", FuntionTypeEnum.FLAG_TYPE_MENU.getCode());
		return sysFunctionDao.selectFunctionListByUserId(map);
	}
	
	/**
	 * DESC: 根据用户ID，查询用户菜单JSON列表
	 * @auther 胡义振
	 * @date 2020年1月14日
	 * @param userId
	 * @return
	 * @throws Exception 
	 * @return
	 */
	public List<JSONObject> doGetMenuJsonByUserId(String userId) throws Exception{
		List<SysFunction> listSysFunction = doGetMenuListByUserId(userId);
		return sysFunctionBPO.doExchangeFunctionListToJson(listSysFunction);
	}
   
}
